package pers.cz.service;

import pers.cz.model.*;

import java.util.List;
import java.util.Map;

public interface AutoTestCaseService {

    // 分页查询自动化案例
    public List<AutoTestCase> queryAllAutoTestCaseByPage(Integer pageStart, Integer pageLimit);
    // 查询案例总数用于分页展示
    public Integer qeuryCount();
    // 添加自动化案例
    public Integer addAutoTestCase(AutoTestCase autoTestCase);
    // 修改自动化案例
    public Integer updateAutoTestCase(AutoTestCase autoTestCase);
    // 删除自动化案例
    public Integer deleteAutoTestCase(Integer id);
    // 根据案例名称模糊查询自动化案例
    public List<AutoTestCase> selectAutoTestCaseByFuzzy(String caseName);
    // 增加案例时先获取案例编号以便和参数和检查点
    public Long getSoNbr();
    // 增加案例参数
    public Integer addTestCaseParams(AutoTestCaseParams autoTestCaseParams, AutoTestCaseParamsSql autoTestCaseParamsSql, AutoTestCaseParamsCode autoTestCaseParamsCode, AutoTestCaseParamsRegular autoTestCaseParamsRegular);
    // 增加案例检查点
    public Integer addTestCaseCheck(AutoTestCaseCheck autoTestCaseCheck);
    // 增加公共参数
    public Integer addPublicParams(AutoPublicParams autoPublicParams);
    // 批量删除案例
    public Integer deleteAutoTestCaseBatch(List<Integer> ids);
    // 根据案例Id查询检查点用于修改时回显
    public List<AutoTestCaseCheck> queryAutoTestCaseCheckByTestCaseId(Integer testCaseId);
    // 修改检查点
    public Integer updateAutoTestCaseCheck(AutoTestCaseCheck autoTestCaseCheck);
    // 根据案例Id查询测试案例入参用于修改时回显
    public List<AutoTestCaseParams> queryAutoTestCaseParams(Integer testCaseId);
    // 根据案例id查询公共入参用于修改时回显
    public List<AutoPublicParams> queryAutoPublicParams(Integer testCaseId);
    // 修改案例入参
    public Integer updateAutoTestCaseParams(AutoTestCaseParams autoTestCaseParams);
    // 修改公共入参
    public Integer updateAutoPublicParams(AutoPublicParams autoPublicParams);
    // 删除检查点
    public Integer deleteAutoTestCaseCheckById(Integer id);
    // 获取所有的测试案例名称和案例id用于添加job时选择
    Map<Integer, List<String>> selectAllIdAndCaseName();
    // 保存入参的参数化代码
    public Integer saveCode(AutoTestCaseParamsCode autoTestCaseParamsCode);
    // 保存入参的参数化sql代码
    public Integer saveSqlCode(AutoTestCaseParamsSql autoTestCaseParamsSql);
    // 修改参数化代码
    Integer updateCode(AutoTestCaseParamsCode autoTestCaseParamsCode);
    // 修改sql代码
    Integer updateSqlCode(AutoTestCaseParamsSql autoTestCaseParamsSql);
    // 查询脚本用于修改时回显
    AutoTestCaseParamsCode queryCode(Integer paramId);
    // 查询sql用于修改时回显
    AutoTestCaseParamsSql querySqlCode(Integer paramId);
    // 根据模板id删除sql
    public Integer deleteSqlTemplateById(Integer sqlTemplateId);
    // 修改sql模板
    public Integer updateSqlTemplate(AutoCollectTestCaseSql autoCollectTestCaseSql);
    // 增加sql模板
    public Integer addSqlTemplate(AutoCollectTestCaseSql autoCollectTestCaseSql);
    // 批量增加案例sql校验内容
    public Integer addAutoCheckSqls(List<AutoTestCaseCheckSql> autoTestCaseCheckSqls);
    // 增加案例sql校验内容
    public Integer addAutoCheckSql(AutoTestCaseCheckSql autoTestCaseCheckSql);

    List<AutoTestCaseCheckSql> findChcekSqlsByTestCaseId(Integer testCaseId);

    int updateChcekSql(AutoTestCaseCheckSql autoTestCaseCheckSql);

    Integer deleteCheckSqlById(Integer id);
    // 修改参数中的正则表达式
    Integer updateRegularExpr(AutoTestCaseParamsRegular autoTestCaseParamsRegular);
}
